रनटाइम विरूद्ध वेळ संकलित करा
कंपाईल-टाइम आणि रनटाइम सॉफ्टवेअर डेव्हलपमेंटमध्ये वापरल्या जाणार्या दोन प्रोग्रामिंग अटी आहेत. कंपाईल-टाइम ही वेळ आहे ज्यावर स्त्रोत कोड एक्झिक्युटेबल कोडमध्ये रूपांतरित केला जातो तर रन टाइम जेव्हा एक्झिक्युटेबल कोड चालू सुरू केला जातो. कंपाईल-टाइम आणि रनटाइम दोन्ही विविध प्रकारच्या त्रुटीचा संदर्भ घेतात.
संकलित-वेळ त्रुटी
कंपाईल-टाइम त्रुटी म्हणजे जेव्हा आम्ही चुकीचे वाक्यरचना लिहितो तेव्हा उद्भवलेल्या त्रुटी. जर आम्ही कोणत्याही प्रोग्रामिंग भाषेचे चुकीचे वाक्यरचना किंवा शब्दांक लिहित असाल तर कंपाईलरद्वारे कंपाईल-टाइम त्रुटी फेकल्या जातील. प्रोग्राममधून सर्व त्रुटी काढल्याशिवाय कंपाईलर प्रोग्राम चालविण्यास परवानगी देणार नाही. जेव्हा प्रोग्राममधून सर्व त्रुटी काढल्या जातात, तेव्हा कंपाईलर एक्झिक्युटेबल फाइल व्युत्पन्न करेल. कंपाईल-टाइम त्रुटी असू शकतात: वाक्यरचना त्रुटी अर्थपूर्ण त्रुटी
वाक्यरचना त्रुटी
जेव्हा प्रोग्रामर कोणत्याही प्रोग्रामिंग भाषेच्या वाक्यरचनाचे अनुसरण करीत नाही, तर कंपाईलर वाक्यरचना त्रुटी फेकून देईल. उदाहरणार्थ, इंट ए, बी: वरील घोषणेमुळे कंपाईल-टाइम त्रुटी निर्माण होते जसे की प्रत्येक विधान अर्धविरामाने संपते, परंतु आम्ही स्टेटमेंटच्या शेवटी एक कोलन (:) ठेवतो.
अर्थपूर्ण त्रुटी
जेव्हा स्टेटमेन्ट कंपाईलरला अर्थपूर्ण नसतात तेव्हा अर्थपूर्ण त्रुटी अस्तित्वात असतात. उदाहरणार्थ, ए+बी = सी; वरील विधान कंपाईल-टाइम त्रुटी फेकते. वरील विधानात, आम्ही 'ए' आणि 'बी' च्या सारांशात 'सी' चे मूल्य नियुक्त करीत आहोत जे सी प्रोग्रामिंग भाषेत शक्य नाही कारण त्यात असाइनमेंट ऑपरेटरच्या डाव्या बाजूला फक्त एकच चल असू शकते तर असाइनमेंट ऑपरेटरच्या उजवीकडे एकापेक्षा जास्त बदल असू शकतात. वरील विधान पुन्हा लिहिले जाऊ शकते: सी = ए+बी;
रनटाइम त्रुटी
रनटाइम त्रुटी म्हणजे अंमलबजावणी दरम्यान आणि संकलनानंतर उद्भवणार्या त्रुटी. रनटाइम त्रुटींची उदाहरणे शून्याद्वारे विभाजित आहेत. या त्रुटी शोधणे सोपे नाही कारण कंपाईलर या त्रुटींकडे लक्ष देत नाही. चला काही टिपिकल सी रनटाइम त्रुटी प्रकार, प्रकरणे आणि त्यांचे संभाव्य प्रभाव एक्सप्लोर करूया.
शून्याने विभाग:
शून्य द्वारे विभागणी गणिताने अपरिभाषित असल्याने, शून्यने पूर्णांक विभाजित करण्याचा प्रयत्न केल्याने रनटाइम त्रुटीकडे दुर्लक्ष होते. या चुकांमुळे प्रोग्राम क्रॅश होतो किंवा अपवाद निर्माण होतो. येथे एक उदाहरण आहे:
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya() {
paunaZ A = 10;
paunaZ bai = 0;
paunaZ parinaama = A / bai; // vaiBaaga vDara Saunya
laiha("parinaama: %paunaZ\n", parinaama);
vaapasakra 0;
}
आउटपुट
tarMgata paEZMT ApavaaD (kaeAr dMpad)
स्पष्टीकरण:
शून्य द्वारे विभागणीमुळे जेव्हा प्रोग्राम रनटाइमच्या समस्येचा सामना करतो तेव्हा "फ्लोटिंग पॉईंट अपवाद" त्रुटी संदेश तयार केला जातो.
सीमेबाहेर अॅरेमध्ये प्रवेश करणे:
एक रनटाइम त्रुटी तेव्हा होते जेव्हा एखाद्या अरेच्या घटकाला काही मर्यादांबाहेर प्रवेश केला जातो. जेव्हा एक इंडेक्स अरेच्या आकाराहून मोठा असतो आणि मेमरी प्रवेश नियमांचे उल्लंघन होते तेव्हा त्रुटी साधते. येथे एक उदाहरण आहे:
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya() {
paunaZ PAar[5] = {1, 2, 3, 4, 5};
paunaZ Anaukzmanaika = 10;
paunaZ maulya = PAar[Anaukzmanaika]; // pzavaeSa AWre baaher cyaa mayaaZDa
laiha("maulya: %paunaZ\n", maulya);
vaapasakra 0;
}
आउटपुट
vaiBaajana DaeSa (kaeAr dMpad)
स्पष्टीकरण:
जेव्हा प्रोग्राममध्ये प्रवेश करण्याचा प्रयत्न केला जातो तेव्हा अनुक्रमणिका 10 मधील घटक अॅरेच्या सीमेच्या पलीकडे असतो. परिणामी, एक विभाजन दोष उद्भवतो आणि प्रोग्राम त्रुटीने समाप्त होतो.
शून्य पॉईंटर डीरेफरन्सः
जेव्हा आपण शून्य पॉईंटरच्या मेमरी पत्त्यावर प्रवेश करण्याचा प्रयत्न करता तेव्हा एक रनटाइम त्रुटी उद्भवते, ज्याला शून्य पॉईंटर डेफरेन्सिंग म्हणून ओळखले जाते. शून्य पॉईंटर्समध्ये प्रवेश केल्याने परिणामकारक वर्तन होते कारण ते कायदेशीर मेमरी स्थानांकडे लक्ष देत नाहीत. येथे एक उदाहरण आहे:
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya() {
paunaZ* paiTiAar = Saunya; // Saunya paEZMTr
paunaZ maulya = *paiTiAar; // Saunya paEZMTr derepafrnsa
laiha("maulya: %paunaZ\n", maulya);
vaapasakra 0;
}
आउटपुट
vaiBaajana DaeSa (kaeAr dMpad)
स्पष्टीकरण:
शून्य पॉईंटरचे निषेध करण्याच्या प्रयत्नाचा परिणाम विभाजन फॉल्टमध्ये होतो, ज्यामुळे प्रोग्राम त्रुटी संदेशासह क्रॅश होतो.
निष्कर्ष:
शेवटी, कंपाईल-टाइम आणि रनटाइम त्रुटी म्हणून ओळखल्या जाणार्या सॉफ्टवेअर डेव्हलपमेंटचा कालावधी वेगळा आहे आणि प्रत्येकामध्ये उद्भवू शकणार्या दोषांचा एक अनोखा संच आहे. संकलन चरण दरम्यान जेव्हा कोड एक्झिक्युटेबल फॉर्ममध्ये रूपांतरित होतो तेव्हा कंपाईल-टाइम त्रुटी उद्भवतात. या त्रुटींमध्ये अर्थपूर्ण त्रुटी समाविष्ट आहेत, जे अतार्किक किंवा हास्यास्पद कोड तयार करतात आणि वाक्यरचना दोष प्रोग्रामिंग भाषेच्या कायद्यांविरूद्ध जातात. या त्रुटी कंपाईलरद्वारे ओळखल्या जातात आणि नोंदवल्या जातात, कोड निश्चित होईपर्यंत कोडची अंमलबजावणी अवरोधित करतात. दुसरीकडे, जेव्हा एखादा प्रोग्राम चालू असतो आणि कंपाईलरद्वारे पकडला जात नाही तेव्हा रनटाइम त्रुटी उद्भवतात. ते शून्य, चुकीच्या मेमरी प्रवेश किंवा इतर अप्रत्याशित घटनांसह विभागणीसह अनेक अटींमुळे उद्भवू शकतात. रनटाइम त्रुटी शोधणे आणि डीबग करणे अधिक कठीण आहे कारण त्यांचा परिणाम वारंवार प्रोग्राम क्रॅश किंवा अनपेक्षित वर्तन होतो. रनटाइम त्रुटी सुगमपणे व्यवस्थापित करण्यासाठी आणि प्रोग्रामच्या स्थिरतेची हमी देण्यासाठी, विकसक अपवाद हाताळणीसारख्या त्रुटी-हाताळणी तंत्राचा वापर करतात.